技術文章
技術問答
My Project
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
文章
問答
Tag
邦友
鐵人賽
搜尋
2026 iThome 鐵人賽
DAY
23
0
Software Development
從零開始學程式語言:Java 新手修煉記
系列 第
23
篇
Day 23:檔案處理
18th鐵人賽
ling__
2026-10-07 23:56:30
32 瀏覽
分享至
本日學習:
串流 stream
由字元與位元組成
可經由串流從資料來源讀寫資料,也可將資料以字元或位元型式寫到檔案
輸入串流 & 輸出串流
java.io 資料庫處理
字元串流:Reader and Writer 處理,即純文字檔
位元串流:InputStream and OutputStream 處理,即二進位檔
處理方式:先透過檔案相關類別的建構子建立物件 → 利用物件的 write() or read() 函數來讀取或寫入資料 → 處理資料 → close() 關閉串流
檔案的基本處理
函數通常繼承給子類別使用
Reader 類別的函數:
void close():關閉串流
int read():讀取串流中的一個字元
int read(char[] cbuf):從串流讀取資料並放到字元陣列 cbuf 中,並傳回所讀取字元總數
int read(char[] cbuf, int off, int len):從串流讀取資料並放到字元陣列 cbuf 的某個範圍(off:陣列索引值,len:讀取字元數)
long skip(long n):跳過 n 個字元不讀取
Writer() 類別的函數:
void close():關閉串流
abstract void flush():將緩衝區資料寫到檔案裡(寫在 Writer 子類別內)
void write(char[] cbuf):將字元陣列 cbuf 輸出到串流
void write(char[] cbuf, int off, int len):將字元陣列 cbuf 依指定格式輸出到串流(off:陣列索引值,len:讀取字元數)
void write(int c):將單一字元 c 輸入到串流中
void write(String str):將字串 str 輸出到串流中
void write(String str, int off, int len):將字串 str 輸出到串流(off:陣列索引值,len:讀取字元數)
FileReader:
繼承自 InputStreamReader 類別,它的父類別為 Reader 類別
可讀取文字檔
先呼叫 FileReader() 建構子建立 FileReader 類別的物件,再利用它呼叫 read() 函數來讀取檔案,例如:FileReader(String name)
文字文件的編碼要選:ANSI
一格中文字一個字元,換行為兩個字元
FileWriter:
繼承自 OutputStreamWriter 類別,它的父類別為 Writer 類別
將字元型態的資料寫入檔案
先呼叫 FileWriter() 建構子建立 Filewriter 類別的物件,再利用它呼叫 write() 函數來讀取檔案,例如:FileWriter(String filename)、FileWriter(String filename, Boolean a),a 若設為 true,資料會加在原先資料後面
IOEception 例外處理
以上不使用緩衝區處理,因此存取效率較差
利用緩衝區讀寫資料
先將資料放到緩衝區而不是磁碟
會佔一塊記憶體空間
有資料流失風險
讀取資料:BufferedReader 類別
先建立 FilReader 物件,再以它為引數建立 BufferedReader 類別的物件,藉此物件來讀取
建構子:BufferedReader(Reader in)、BufferedReader(Reader in, int size)
函數:
void close():關閉串流
int read():讀取單一字元
int read(char[] cbuf, int off, int len)
long skip(long n):跳過 n 個字元不讀取
String readLine():讀取一行字串
輸出資料:BufferedWriter 類別
先建立 FilWriter 物件,再以它為引數建立 BufferedWriter 類別的物件,藉此物件來讀取
建構子:BufferedWriter(Writer out)、BufferedWriter(Reader out, int size)
函數:
void close():關閉串流
void flush():寫入緩衝區的字元到檔案
void write(char[] cbuf, int off, int len)
void write(String s, int off, int len)
void write(int c):寫入單一字元
void newLine():寫入換行字元
留言
追蹤
檢舉
上一篇
Day 22:類別(10)
下一篇
Day 24:例外處理
系列文
從零開始學程式語言:Java 新手修煉記
共
29
篇
目錄
RSS系列文
訂閱系列文
0
人訂閱
25
Day 25:Java Collection 集合物件(1)
26
Day 26:Java Collection 集合物件(2)
27
Day 27:Java Collection 集合物件(3)
28
Day 28:成果(1)
29
Day 29:成果(2)
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
929
組
團體組數
32
組
累計文章數
19998
篇
完賽人數
470
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
18th鐵人賽
17th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
熱門問題
鎖住個人檔案
MAMP中mysql基礎設定更改後server not running
2026年-請益支援中文codeing 的地端LLM
熱門回答
熱門文章
AI API網站怎麼選?從六種服務比較,到訂單資料擷取實測
BitTorrent 种子下载与 Magnet 磁力下载
如何調整IT高壓的身心
討論何時該用合併何時該用連結縮身系統
Claude code 新手篇 9: Artifacts — 把產出變成一個會更新的網址
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}